]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shell-global: Only set the scale factor if get_setting succeeded
authorJasper St. Pierre <jstpierre@mecheye.net>
Sat, 22 Feb 2014 23:00:57 +0000 (18:00 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Sun, 23 Feb 2014 15:54:32 +0000 (10:54 -0500)
If gdk_screen_get_setting fails, like if it's running without XSettings,
then the GValue will have a value of 0. A lot of code tries to divide by
the scale factor. This produces NaN, and combined with the fact that NaN
is "leaky", we very quickly end up spinning out of control.

src/shell-global.c

index 7e0ac8b56a83d658fe377fc311e869cf1e3bcfb5..59b5273d19be11290acd6c1c3aae03c2d8fb9df1 100644 (file)
@@ -756,8 +756,8 @@ update_scale_factor (GdkScreen *screen, gpointer data)
   GValue value = G_VALUE_INIT;
 
   g_value_init (&value, G_TYPE_INT);
-  gdk_screen_get_setting (global->gdk_screen, "gdk-window-scaling-factor", &value);
-  g_object_set (context, "scale-factor", g_value_get_int (&value), NULL);
+  if (gdk_screen_get_setting (global->gdk_screen, "gdk-window-scaling-factor", &value))
+    g_object_set (context, "scale-factor", g_value_get_int (&value), NULL);
 }
 
 /* This is an IBus workaround. The flow of events with IBus is that every time